Graceful Termination
アプリケーションが実行中のタスクを完了し、リソースを解放し、データの整合性を保ちながら終了すること。例外発生時やシグナルハンドリング時に、アプリケーションがスムーズに終了することで、リクエストの中断やデータの損失を最小限に抑えることができる。
KubernetesやSpring Bootなどのドキュメントでは、{terminate, shutdown} {gracefully, with grace}などといった形で表現されている。
Kubernetes best practices: terminating with grace - Google Cloud
Graceful Shutdown in Spring Boot: Ensuring Smooth Application Termination
意識すること
リソースを適切に解放する。
ファイルハンドル
データベース接続など
メモリリークを防ぐ
データベースのトランザクションをロールバックする
データ整合性を保つ
アプリケーションの状態を適切に保存する
セッションデータ
キャッシュなど
これらを再起動時に復元できるようにする。